package com.example.forum.services;

import com.example.forum.entity.Article;
import com.example.forum.entity.User;
import com.example.forum.exception.CustomException;
import com.example.forum.vo.ArticleDetailVO;
import com.example.forum.vo.ArticleVO;

import java.util.List;

public interface IArticleService {

    /**
     * 创建文章
     * @param article
     */
    void create(Article article) throws CustomException;

    /**
     * 获取所有版块下的所有文章
     *
     * @param boardId (id可选)
     * @return
     */
    List<ArticleVO> getAllArticle(Long boardId);

    /**
     * 根据板块id获取所有文章
     *
     * @return
     */
    List<ArticleVO> getAllByBoardId(Long boardId);

    /**
     * 根据文章id获取文章详情
     *
     * @param articleId
     * @return
     */
    ArticleDetailVO getById(Long articleId) throws CustomException;

    /**
     * 修改文章
     *
     * @param id
     * @param title
     * @param content
     */
    void modify(Long id, String title, String content) throws CustomException;

    /**
     * 根据id获取文章
     *
     * @param id
     * @return
     */
    Article getByIdArticle(Long id);

    /**
     * 点赞
     *
     * @param id
     * @param user
     * @return
     */
    boolean thumbsUp(Long id, User user) throws CustomException;

    /**
     * 删除文章
     *
     * @param id
     * @param boardId
     */
    void delete(Long id, Long userId, Long boardId) throws CustomException;

    /**
     * 根据用户id获取所有文章
     *
     * @param id
     * @return
     */
    List<Article> getAllByUserId(Long id) throws CustomException;
}
